package com.pug.zixun.service.nav;


import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.pug.zixun.mapper.NavMapper;
import com.pug.zixun.pojo.Nav;
import com.pug.zixun.vo.NavVo;
import com.pug.zixun.bo.NavBo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import com.pug.zixun.commons.enums.ResultStatusEnum;
import com.pug.zixun.commons.ex.PugValidatorException;
import com.pug.zixun.commons.utils.fn.asserts.Vsserts;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;



/**
 * NavServiceImpl实现类
 * 创建人:yykk<br/>
 * 时间：2022-12-02 11:09:41 <br/>
 * 源码下载：前台代码 git clone https://gitee.com/kekesam/kuangstudy-pug-ui.git
 * 飞哥B站地址：后台代码 git clone https://gitee.com/kekesam/kuangstudy-pug-parent.git
 * @version 1.0.0<br/>
 *
*/
@Service
@Slf4j
public class NavServiceImpl extends ServiceImpl<NavMapper,Nav> implements INavService  {

    /**
     * 查询分页&搜索导航栏管理
     * @param navVo
     * @return IPage<Nav>
     * 创建人:yykk
     * 创建时间：2022-12-02 11:09:41
     * @version 1.0.0
     */
    @Override
	public IPage<NavBo> findNavPage(NavVo navVo){
	    // 设置分页信息
		Page<Nav> page = new Page<>(navVo.getPageNo(),navVo.getPageSize());
		// 设置查询条件
        LambdaQueryWrapper<Nav> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        // lambdaQueryWrapper.select(Nav.class, column -> !column.getColumn().equals("description"));
        // 根据关键词搜索信息
        lambdaQueryWrapper.like(Vsserts.isNotEmpty(navVo.getKeyword()), Nav::getTitle,navVo.getKeyword());
         //查询发布的 0 未发布  1 发布
        lambdaQueryWrapper.eq(navVo.getStatus() != null ,Nav::getStatus,navVo.getStatus());
        lambdaQueryWrapper.eq(Vsserts.isNotNull(navVo.getCategoryId()),Nav::getType,navVo.getCategoryId());
        lambdaQueryWrapper.orderByDesc(Nav::getCreateTime);
        // 查询分页返回
		IPage<Nav> results = this.page(page,lambdaQueryWrapper);
		return tranferPageBo(results,NavBo.class);
	}

    /**
     * 查询导航栏管理列表信息
     * @method: findNavList
     * @result : List<Nav>
     * 创建人:yykk
     * 创建时间：2022-12-02 11:09:41
     * @version 1.0.0
     * @return
    */
    @Override
    public List<NavBo> findNavList() {
     	// 1：设置查询条件
        LambdaQueryWrapper<Nav> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        // 2：查询发布的 0 未发布  1 发布
        lambdaQueryWrapper.eq(Nav::getStatus,1);
        // 3: 查询返回
        return tranferListBo(this.list(lambdaQueryWrapper),NavBo.class);
    }

	/**
     * 根据id查询导航栏管理明细信息
     * @param id
     * @return Nav
     * 创建人:yykk
     * 创建时间：2022-12-02 11:09:41
     * @version 1.0.0
     */
    @Override
    public NavBo getNavById(Long id) {
        return tranferBo(this.getById(id),NavBo.class);
    }


    /**
     * 保存&修改导航栏管理
     * @param nav
     * @return Nav
     * 创建人:yykk
     * 创建时间：2022-12-02 11:09:41
     * @version 1.0.0
     */
    @Override
	public NavBo saveupdateNav(Nav nav){
		boolean flag = this.saveOrUpdate(nav);
		return flag ? tranferBo(nav,NavBo.class)  : null;
	}


    /**
     * 根据id删除导航栏管理
     * @param id
     * @return int
     * 创建人:yykk
     * 创建时间：2022-12-02 11:09:41
     * @version 1.0.0
     */
    @Override
    public int deleteNavById(Long id) {
        Nav adminRole = this.getById(id);
        if (adminRole != null) {
            adminRole.setStatus(0);
            boolean b = this.updateById(adminRole);
            return 1;
        }
        return 0;
    }




}
